package com.ruoyi.common.utils.wx;

import com.ruoyi.common.core.text.StrFormatter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;


/**
 * 功能描述:    微信接口调用组织类
 *
 * @Author wanghc
 * @Date 2022/08/20 18:04
 * @return
 */
@Component
public class WechatUtils {

    /**
     * 定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置
     */
    private static String appId;
    private static String appSecret;
    /**
     * 获取微信提供的用户身份标识URL
     */
    private static String loginUrl;
    /**
     * 获取微信公众号的全局唯一接口调用凭据URL
     */
    private static String tokenUrl;
    /**
     * 微信公众号发送统一服务消息URL
     */
    private static String pushMsgUrl;
    /**
     * 小程序工单推送消息页面跳转路径
     */
    private static String pagePath;

    @Value("${wechat.miniprogram.appid}")
    public void setAppId(String appId2) {
        appId = appId2;
    }

    public static String getAppId(){
        return appId;
    }

    @Value("${wechat.miniprogram.appSecret}")
    public void setAppSecret(String appSecret2) {
        appSecret = appSecret2;
    }

    @Value("${wechat.common.loginUrl}")
    public void setLoginUrl(String loginUrl2) {
        loginUrl = loginUrl2;
    }

    @Value("${wechat.common.tokenUrl}")
    public void setTokenUrl(String tokenUrl2) {
        tokenUrl = tokenUrl2;
    }

    @Value("${wechat.common.pushMsgUrl}")
    public void setPushMsgUrl(String pushMsgUrl2) {
        pushMsgUrl = pushMsgUrl2;
    }

    @Value("${wechat.miniprogram.order.pagepath}")
    public void setPagePath(String pagePath2) {
        pagePath = pagePath2;
    }


    /**
     * 功能描述:  组织工单小程序获取openid接口地址（占位符替换）
     *
     * @Author wanghc
     * @Date 2022/08/20 18:35
     * @param jsCode
     * @return java.lang.String
     */
    public static String getMiniprogramLoginUrl(String jsCode) {
        return StrFormatter.format(loginUrl,
        		appId,
        		appSecret,
                jsCode);
    }

    /**
     * 功能描述:    组织小程序获取access_token接口地址（占位符替换）
     *
     * @Author wanghc
     * @Date 2022/08/20 18:35
     * @return java.lang.String
     */
    public static String getMiniprogramAccessToken() {
        return StrFormatter.format(tokenUrl,
                appId,
                appSecret);
    }

    /**
     * 功能描述:    组织微信小程序发送消息接口地址（占位符替换）
     *
     * @Author wanghc
     * @Date 2022/08/21 09:06
     * @param accessToken
     * @return java.lang.String
     */
    public static String getMiniprogramPushMsgUrl(String accessToken) {
        return StrFormatter.format(pushMsgUrl, accessToken);
    }

    /**
     * 组织小程序发送消息接口地址（字符串替换）
     *
     * @return
     */
    public static String getMiniprogramPagePath(Long orderId) {
        return StrFormatter.format(pagePath, orderId);
    }

}